/*
 * send.m:
 * do a UDP broadcast
 */

#import "Registration.h"
#include <sys/types.h>
#include <sys/socket.h>
#import <pwd.h>
#import <netinet/in.h>
#import <netdb.h>

main(int argc,char **argv)
{
	struct  sockaddr_in sin;
	struct	servent *sp;
	int	sock;
	int	cc;
	struct  hostent *host = 0;
	struct	regNetToken nt;
	struct	passwd	*pw;

	sin.sin_family	= AF_INET;
	sin.sin_port	= 45743;	/* our port */

	host	= gethostbyname("broadcasthost");
	sin.sin_family	= host->h_addrtype;
	memcpy(&sin.sin_addr,host->h_addr_list[0],host->h_length);

	sock	= socket(AF_INET,SOCK_DGRAM,0); /* get a socket */

	argc--;
	argv++;

	memset(&nt,0,sizeof(nt));

	pw	= getpwuid(getuid());

	strncpy(nt.username,pw->pw_name,sizeof(nt.username)-1);
	strncpy(nt.person,pw->pw_gecos,sizeof(nt.person)-1);

	nt.command	= C_PRINT;
	while(argc){
		strcat(nt.userData,*argv);
		strcat(nt.userData," ");
		argc--;
		argv++;
	}

	cc	= sendto(sock,&nt,sizeof(nt),0,(struct sockaddr *)&sin,sizeof(sin));
	exit(0);
}
